﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Rage
{
    public enum CharacterClass
    {
        // Imperial
        Juggernaut = 1,
        Marauder = 2,
        Assassin = 3,
        Sorcerer = 4,
        Powertech = 5,
        Mercenary = 6,
        Operative = 7,
        Sniper = 8,
        // Republic
        Guardian = 9,
        Sentinel = 10,
        Shadow = 11,
        Sage = 12,
        Vanguard = 13,
        Commando = 14,
        Scoundrel = 15,
        Gunslinger = 16,
    }

    public enum CharacterFaction
    {
        Republic = 1,
        Imperial = 2,
    }

    public enum CharacterRegion
    {
        US, EU, KR, TW, CN
    }

    public enum CharacterRace
    {
        None          =  0, // Used for the Race chart
        Human         =  1,
        Chiss         =  2,
        Mirakula      =  3,
        Mirialan      =  4,
        Rattataki     =  5,
        SithPureblood =  6,
        TwiLek        =  7,
        Zabrak        =  8,
    }

    public enum CharacterSlot
    {
        None = -1,

        Head = 0,
        Chest = 1,
        Hands = 2,
        Waist = 3,
        Legs = 4,
        Feet = 5,

        Ear = 6,
        Implant1 = 7,
        Implant2 = 8,
        Wrist = 9,
        Relic1 = 10,
        Relic2 = 11,

        MainHand = 12,
        OffHand = 13,

        Armoring = 100,
        Hilt = 101,
        Barrel = 102,
        Mod = 103,
        Enhancement = 104,
        ColorCrystal = 105,
        Augment = 106,

        AutoSelect = 1000,
    }

    public enum ItemAvailability
    {
        NotAvailable,
        Available,
        RemoddingAllowed,
    }

    public enum ItemDamageType
    {
        /// <summary>ItemDamageType.None = 0</summary>
        None = GomLib.Models.ItemDamageType.None,
        /// <summary>ItemDamageType.Kinetic = 1</summary>
        Kinetic = GomLib.Models.ItemDamageType.Kinetic,
        /// <summary>ItemDamageType.Energy = 2</summary>
        Energy = GomLib.Models.ItemDamageType.Energy,
        /// <summary>ItemDamageType.Internal = 3</summary>
        Internal = GomLib.Models.ItemDamageType.Internal,
        /// <summary>ItemDamageType.Elemental = 4</summary>
        Elemental = GomLib.Models.ItemDamageType.Elemental,
    }

    [Flags]
    public enum ItemDamageFlags
    {
        None = 0,
        /// <summary>ItemDamageType.Kinetic = 0</summary>
        Kinetic = 1 << ItemDamageType.Kinetic,
        /// <summary>ItemDamageType.Energy = 1</summary>
        Energy = 1 << ItemDamageType.Energy,
        /// <summary>ItemDamageType.Internal = 2</summary>
        Internal = 1 << ItemDamageType.Internal,
        /// <summary>ItemDamageType.Elemental = 3</summary>
        Elemental = 1 << ItemDamageType.Elemental,
    }

    public enum ItemQuality
    {
        // Copied from GomLib.Models.ItemQuality
        Temp = -1,
        Cheap = 0,
        Standard = 1,
        Premium = 2,
        Prototype = 3,
        Artifact = 4,
        Legendary = 5,
        Legacy = 6,
        Quest = 7,
        Currency = 8,
        Moddable = 9
    }

    public enum ItemFaction
    {
        Neutral = 0,
        Republic = 1,
        Imperial = 2,
    }

    public enum ItemType
    {
        None = GomLib.Models.ItemSubCategory.OtherUnknown,

        Light = GomLib.Models.ItemSubCategory.EquipmentLightArmor,
        Medium = GomLib.Models.ItemSubCategory.EquipmentMediumArmor,
        Heavy = GomLib.Models.ItemSubCategory.EquipmentHeavyArmor,

        Ear = GomLib.Models.ItemSubCategory.EquipmentEar,
        Implant = GomLib.Models.ItemSubCategory.EquipmentImplant,
        Relic = GomLib.Models.ItemSubCategory.EquipmentRelic,

        Vibroknife = GomLib.Models.ItemSubCategory.WeaponVibroknife,
        Vibrosword = GomLib.Models.ItemSubCategory.WeaponVibroblade,
        Lightsaber = GomLib.Models.ItemSubCategory.WeaponLightsaber,
        DoubleBladedLightsaber = GomLib.Models.ItemSubCategory.WeaponPolesaber,
        Techblade = GomLib.Models.ItemSubCategory.WeaponTechblade,
        Electrostaff = GomLib.Models.ItemSubCategory.WeaponElectrostaff,
        TechStaff = GomLib.Models.ItemSubCategory.WeaponTechstaff,

        BlasterPistol = GomLib.Models.ItemSubCategory.WeaponBlasterPistol,
        BlasterRifle = GomLib.Models.ItemSubCategory.WeaponBlasterRifle,
        SniperRifle = GomLib.Models.ItemSubCategory.WeaponSniperRifle,
        AssaultCannon = GomLib.Models.ItemSubCategory.WeaponAssaultCannon,
        Shotgun = GomLib.Models.ItemSubCategory.WeaponShotgun,

        Focus = GomLib.Models.ItemSubCategory.EquipmentFocus,
        Shield = GomLib.Models.ItemSubCategory.EquipmentShield,
        Generator = GomLib.Models.ItemSubCategory.EquipmentGenerator,
    }

    public enum ItemSlot
    {
        None = 0,

        Head = 1,
        Chest = 2,
        Hands = 3,
        Waist = 4,
        Legs = 5,
        Feet = 6,

        Ear = 7,
        Implant = 8,
        Wrist = 10,
        Relic = 11,

        MainHand = 13,
        OffHand = 14,
        OneHand = 15,

        Armoring = 100,
        Hilt = 101,
        Barrel = 102,
        Mod = 103,
        Enhancement = 104,
        ColorCrystal = 105,
        Augment = 106,
    }

    public enum BuffGroup
    {
        All = 0,
        Current,
        Food,
        Stims,
        Medpacks,
        RaidBuffs,
        RaidDeBuffs
    }

    /*public enum Profession
    { // values are based upon what the armory returns for those profession id's
        None = 0,
        Alchemy = 1,
        Enchanting = 2,
        Engineering = 3,
        Herbalism = 4,
        Inscription = 5,
        Jewelcrafting = 6,
        Leatherworking = 7,
        Skinning = 8,
        Tailoring = 9,
        Blacksmithing = 10,
        Mining = 11,
    }*/

    public enum JuggStances
    {
        /// <summary>Enters a balanced Lightsaber form, increasing all damage dealt and reducing all damage received by 3%</summary>
        ShiiChoForm = 0,
        /// <summary>Enters a defensive Lightsaber form, reducing all damage taken by 6%, increasing armor rating by 60% and increasing threat generation by 50%.
        /// Soresu form also increases shield chance by 15%. While active, taking damage builds 1 rage. This effect cannot occur more than once every 6 seconds.</summary>
        SoresuForm = 1,
        /// <summary>Enters an aggressive Lightsaber form, increasing all damage dealt by 6%. All attacks that cost rage will refund 1 rage when used.
        /// In addition, you generate 1 rage when attacked, but this effect cannot occur more than once every 6 seconds.</summary>
        ShienForm = 2,
    }
}
